SDB:Installing a Printer
Situation
You like to install your printer.
First, check that the prerequisites below are fulfilled.
For information about printing basics see Concepts printing.
This article is for CUPS up to version 2.x under Linux with the traditional filtering system and backends there.
The nowadays driverless printing workflow is rather different.
Prerequisites
The printer must be supported by openSUSE
Information about printers supported by openSUSE:
- PostScript printers are supported, see Concepts printing
- HCL:Printers
- Run the YaST printer module and check the list of models therein, You do not need to have a printer connected to do this. Click "Add" and set up a print queue for an imaginary printer. Use the "Search" functionality to find out if there are drivers (i.e. printer description files) available for a particular model in your currently installed openSUSE version. Read the help texts in YaST when you set up an imaginary printer.
- Run as root the command
lpinfo -l -m | less
(type 'q' to quit) which also shows information about the installed printer description files (PPD files) of your currently used openSUSE version.
Information about printers supported by Linux (not necessarily supported by openSUSE):
- OpenPrinting at the Linux Foundation
- Supported Printers of the Gutenprint (formerly called Gimp-Print) project
- Supported Printers of the HP Linux Imaging and Printing project
- Printer Compatibility list of the Ghostscript project
The accuracy of the above sources cannot be guaranteed, as the Linux support information is usually based on customer and user statements. Moreover, "supported" usually means "average quality and performance", see SDB:Purchasing a Printer and Compatibility.
If you own a so called "GDI printer" (a printer that does not understand a standard printer language), it is probably not supported by Linux, see SDB:GDI Printers.
The printer must be accessible
USB printers
Regular USB printers are accessible via the generic CUPS backend 'usb' (cf. "What is a CUPS backend and how does it work?" in SDB:CUPS in a Nutshell).
Some USB printers do not behave normally at the USB. Therefore the CUPS backend 'usb' knows about some so called "quirks" for particular USB printers so that even "quirky" USB printers could work. See /usr/share/cups/usb/org.cups.usb-quirks about currently known "quirky" USB printers. You may have to add "quirks" for your particular USB printer there.
There are "exceptional" printing devices that are connected via USB but do not at all behave like regluar USB printers so that they are not at all accessible via the CUPS backend 'usb' but require a special CUPS backend. In /usr/share/cups/usb/org.cups.usb-quirks the currently known USB printing devices that do not work with the CUPS backend 'usb' are listed as "blacklist".
Mainly for older systems:
On current systems the usblp kernel module is normally no longer required for USB printer access because nowadays USB printer access happens via libusb. In this case a loaded usblp kernel module could even cause problems/conflicts with the USB printer access via libusb.
When the printer is connected to the USB, and when it is the only printer which is connected to the USB, reload the kernel module for direct USB printer access (as root):
rmmod usblp modprobe usblp
You can test if the printer is accessible as first USB printer via /dev/usb/lp0
using the following command (as root):
echo -en "\rHello\r\f" >/dev/usb/lp0
If the above "rmmod usblp" command did show an error message like "Module usblp does not exist in /proc/modules" the usblp kernel module was not loaded before so that you may unload the usblp kernel module with "rmmod usblp" after the test to go back to the state before the test.
Parallel port printers
Parallel port printers get more and more rare which results that support for parallel port printers gets more and more out of sight and out of mind of free software developers so that out-of-the-box support for the parallel port becomes more or less abandoned by upstream projects. Nevertheless the parallel port should still work but if there are issues there is no longer official support for it.
Since openSUSE 11.4 udev no longer provides static kernel device nodes for parallel ports like /dev/lp0
and as a consequence the kernel module lp is no longer loaded automatically. By installing the RPM package parallel-printer-support the parallel port device nodes are created so that when data is first sent to a parallel port device node, loading the kernel module lp is again triggered.
When the printer is connected to the first parallel port, the BIOS settings for the first parallel interface should be set as follows:
- IO address 378 (hexadecimal)
- Interrupt 7
- Mode Normal or SPP or Output-Only (other modes may not work)
- DMA is disabled (should be automatically switched off using the modes above)
You can test if the printer is accessible via the first parallel port /dev/lp0
using the following command (as root):
echo -en "\rHello\r\f" >/dev/lp0
If this does not work, you may try to unload the kernel modules for the parallel port (as root):
rmmod lp rmmod ppdev rmmod parport_pc rmmod parport
When there is parallel port hardware in your computer, at least the kernel modules parport, parport_pc, and lp should be loaded by default, otherwise you cannot access a parallel port printer. If you get error message like Module ... does not exist in /proc/modules, the particular kernel module was not loaded which indicates why it failed to access your parallel port printer.
Afterwards load them anew (as root):
modprobe parport modprobe parport_pc modprobe ppdev modprobe lp
Finally retry
echo -en "\rHello\r\f" >/dev/lp0
Network printers
To test if a network printer is accessible, see Testing those connections at SDB:Printing via TCP/IP network.
GDI printers are usually not supported
The above "echo ..." tests should result one sheet with the word Hello
printed on it. The printer must be able to print plain ASCII text directly without any additional printer driver software (in this case, the word Hello
surrounded by the ASCII character \r
, which initiates a carriage return, and followed by the ASCII character \f
, which initiates a form feed).
Printers unable to print ASCII text are most likely GDI printers, but there are some printers that cannot print ASCII text but work with Linux nevertheless.
Printer Installation and Configuration
Run the YaST printer module for the printer installation and configuration. The YaST Printer module can be found in the YaST Control Center under Hardware -> Printer.
Version upgrades for printer driver packages
The various openSUSE versions (e.g. openSUSE Leap, openSUSE Tumbleweed) usually provide the latest printer driver versions that are officially released by the various printer driver upstream projects at the time when the particular openSUSE version is developed and prepared (not at the later time when the particular openSUSE version is finally released).
For printer driver packages a version upgrade makes sense only for those users who actually have a printer device that is not yet supported with the version that we provide in an openSUSE release.
Because printer driver packages support very many different printer models it is less than hopeless to have them tested by us (i.e. by openSUSE) in a reasonable way which means: Basically printer driver packages are not at all tested for all the different supported printer models.
Therefore a printer driver package version upgrade as a regular maintenance update that all users get more or less automatically is not possible because regressions for this or that printer model are unknown in advance.
Or in other words: When a printer driver package version works for a particular user with a particular printer model there is zero reason to enforce a version upgrade for that user by a general maintenance update.
On the other hand when a printer driver package version does not work for a particular user with a particular printer model there is zero reason for that user not to do a version upgrade and try out if the newer version may work for his particular model (provided the newer version claims that model is supported).
The currently latest printer driver versions that are officially released by the various printer driver upstream projects are usually available in the openSUSE Build Service development project "Printing" (usually a relatively short time after it was released by the printer driver upstream projects).
In general we do not provide unstable printer driver development versions (e.g. Git snapshots) in the "Printing" project which is for developing the openSUSE printer driver RPM packages but not for developing printer drivers. The latter happens at the various printer driver upstream projects.
If your particular printer model is listed at a printer driver upstream project that it requires a newer printer driver version than what there is provided in your particular openSUSE version and if that newer printer driver version is officially released at the printer driver upstream project, then have a look at the openSUSE Build Service development project "Printing" if there is already the printer driver version that you need available for your particular openSUSE version.
To get a printer driver RPM package from the "Printing" project, go to http://software.opensuse.org and search for the printer driver RPM package name (e.g. "gutenprint" or "hplip") and click "View" to see its versions. Then select your exact openSUSE version (e.g. openSUSE Leap 15.3, openSUSE Leap 15.4, openSUSE Tumbleweed) and "Show experimental packages" and finally select the package from the "Printing" project. Alternatively for direct download of plain RPM packages go to http://download.opensuse.org/repositories/Printing/ and follow the links that match your system and your system architecture. Use packages that match your particular system. Packages for a bit older systems may work in a bit newer systems. For example a package for openSUSE Leap 15.3 may work in openSUSE Leap 15.4 but never use packages for newer systems in an older system like packages for "openSUSE Tumbleweed" when your system is not "openSUSE Tumbleweed" (unless you really want to mess up your system).
The "Printing" repository is the official openSUSE development repository for the openSUSE printer driver RPM packages which means:
The "Printing" development project may contain new software or work-in-progress changes of existing software that might neither be in a stable state nor fit well into currently installed systems. Have this in mind if you think about to install packages from the "Printing" project into your currently running system.
The packages in the "Printing" project are without any guarantee or warranty and without any support. As an extreme example, this means if your complete computer center crashes because of those packages, it is only your problem.
On the other hand this does not mean that those packages are known to be terrible broken but they are not thoroughly tested so that any unexpected issue can happen.
In the end printer drivers are only applications (printer drivers are no kernel drivers) which means that your system should not "explode" when you upgrade printer drivers with a newer version from the "Printing" project (provided you use the matching packages for your particular system).
If a new version does not work it should usually help to downgrade (and to reconfigure as needed) to get it working again.
In general we (i.e. openSUSE) distribute the various printer driver packages from the various upstream projects but we do not develop printer drivers.
Usually we do not have all those various kind of printer models for all those various kind of printer drivers so that usually we cannot do anything when a particular printer driver does not work. In particular usually we cannot reproduce issues with printer drivers.
When a particular printer driver is listed at the matching upstream project that it should work for your particular printer model but it does not work for you with the currently latest printer driver version that is officially released by the matching upstream project, then it is recommended to report the issue directly to the driver authors at the matching upstream project so that there is a direct communication between you and the upstream authors.
I.e. before you report an issue to the driver authors at the matching upstream project you may have to upgrade the printer driver RPM package to the one from the openSUSE "Printing" project and verify that the issue also happens with the currently latest printer driver release.
In case of issues with printer drivers see SDB:How to Report a Printing Issue for basic tests and basic operations how to diagnose the cause of an issue.
See also "Version upgrades for printer driver packages" at openSUSE:How to contribute to the Printing project.